// 1. 导入发请求的包
import axios from 'axios'
// 导入加载组件
import { Loading } from 'element-ui'
// 导入本地token
import { getToken } from '../api/usertoken.js'
// 大数问题
import JSONbig from 'json-bigint'
// 按照我们传入的参数创建一个实例出来
const instance = axios.create({
  // 请求后台地址的的域名/IP
  baseURL: 'http://ttapi.research.itcast.cn/',
  transformResponse: [function (data) {
    try {
      return JSONbig.parse(data)
    } catch (err) {
      console.log('JSONbig转换出错', err)
      return data
    }
  }]
})
// 声明加载
let loadingInstance
// 拦截器
// 发送请求前
instance.interceptors.request.use(function (config) {
  // 在某些接口中添加token
  if (!config.url.includes('/authorizations')) {
    config.headers.Authorization = `Bearer ${getToken().token}`
  }
  // 开启加载样式
  loadingInstance = Loading.service({
    text: '拼命加载中...',
    background: 'rgba(0, 0, 0, 0.7)',
    spinner: 'el-icon-loading'
  })
  return config
}, function (error) {
  return Promise.reject(error)
})
// 发送请求后
instance.interceptors.response.use(function (response) {
  // 结束加载样式
  setTimeout(function () {
    loadingInstance.close()
  }, 500)
  return response
}, function (error) {
  setTimeout(function () {
    loadingInstance.close()
  }, 500)
  return Promise.reject(error)
})
// 导出实例
export default instance
